Stable release | 2.4 / December 5, 2011 |
---|---|
Written in | C++ |
Operating system | Cross-platform |
Available in | English |
Type | Software library |
License | LGPL open source |
Website | arma.sourceforge.net |
The Armadillo C++ Library aims to provide an efficient and streamlined base for linear algebra operations (matrix maths), while at the same time having a straightforward and easy to use interface. Its intended target users are scientists and engineers.
It supports integer, floating point (single and double precision), complex numbers, and a subset of trigonometric and statistics functions. Various matrix decompositions are provided through optional integration with Linear Algebra PACKage (LAPACK) and Automatically Tuned Linear Algebra Software (ATLAS) libraries.[1] High performance LAPACK replacement libraries such as Math Kernel Library (MKL) and AMD Core Math Library (ACML) can also be used.
The library employs a delayed evaluation approach (during compile time) to combine several operations into one and reduce (or eliminate) the need for temporaries. Where applicable, the order of operations is optimised. Delayed evaluation and optimisation are achieved through recursive templates and template metaprogramming.
Due to its approach, Armadillo is related to the Boost Basic Linear Algebra Subprograms (uBLAS) library, but has a more accessible syntax. Further, as Armadillo has an efficient wrapper of ATLAS and LAPACK functions, it provides machine-dependent optimisations and functions not present in uBLAS.
This library is useful if C++ has been chosen as the language to use (for speed and/or integration abilities), rather than another language like MATLAB or GNU Octave. It is open source software distributed under the GNU Lesser General Public License (LGPL) license, making it useful for developing both open source and proprietary software.
The project is supported by National ICT Australia (NICTA) research centre and is hosted by SourceForge.